package com.zmn.brs.services.interfaces.whitelist;

import com.zmn.brs.model.entity.whitelist.Whitelist;
import com.zmn.brs.model.entity.whitelist.query.WhitelistQuery;

import java.util.List;

/**
 * 描述: 白名单接口类
 *
 * @author wangjie
 * @since 2019-08-01
 **/
public interface WhitelistService {

    /**
     * 描述: 根据白名单id 查询数据
     *
     * @param whitelistId
     *            白名单id
     * @param whitelistType
     *            白名单类型
     * @return com.zmn.plat.model.entity.whitelist.Whitelist 白名单
     **/
    Whitelist findByIdAndType(Integer whitelistId, Integer whitelistType);

    /**
     * 描述: 根据白名单类容，类型，查询白名单数据 （ps:如果查询为0条，则返回空的对象，）
     *
     * @param whiteNum
     *            白名单内容
     * @param whiteType
     *            白名单类型
     * @return com.zmn.plat.model.entity.blacklist.Blacklist
     **/
    Whitelist findByWhiteNumAndType(String whiteNum, Integer whiteType);

    /**
     * 描述: 根据条件查询白名单数据 分页
     *
     * @param query
     *            查询条件
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     **/
    List<Whitelist> listPageByQuery(WhitelistQuery query);

    /**
     * 描述: 根据条件查询白名单数据 不分页
     *
     * @param query
     *            查询条件
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     **/
    List<Whitelist> listByQuery(WhitelistQuery query);

    /**
     * 描述: 根据白名单内容查询数据
     *
     * @param whiteNum
     *            白名单内容
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     * @author wangjie
     * @since 2019/8/2
     **/
    List<Whitelist> listByWhiteNum(List<String> whiteNum);

    /**
     * 描述: 新增白名单
     *
     * @param whitelist
     *            白名单
     **/
    void insertWhitelist(Whitelist whitelist);

    /**
     * 描述: 删除白名单数据
     *
     * @param whitelistId
     *            白名单id
     * @param whitelistType
     *            白名单类型
     **/
    void deleteWhitelistByIdAndType(Integer whitelistId, Integer whitelistType);
}
